<!DOCTYPE html>
<html lang="ar">
	<head>
		<meta charset="utf-8" />
		<base href="../../../" />
		<script src="page.js"></script>
		<link type="text/css" rel="stylesheet" href="page.css" />
	</head>
	<body class="rtl">
		<h1>[name]</h1>

		<p class="desc">
		فئة تمثل [link:https://en.wikipedia.org/wiki/Vector_space متجه] ثلاثي الأبعاد.
		متجه ثلاثي الأبعاد هو ثلاثي مرتب من الأرقام (مسمى x و y و z) ، والذي يمكن استخدامه لتمثيل عدد من الأشياء ، مثل:
		</p>
			
		<ul>
			<li>نقطة في الفضاء ثلاثي الأبعاد.</li>
			<li>
			اتجاه وطول في الفضاء ثلاثي الأبعاد. في three.js سيكون الطول دائمًا
			[link:https://en.wikipedia.org/wiki/Euclidean_distance المسافة الإقليدية]
			(المسافة المستقيمة) من `(0, 0, 0)` إلى `(x, y, z)` و
			يتم قياس الاتجاه أيضًا من `(0, 0, 0)` نحو `(x, y, z)`.
			</li>
			<li>أي ثلاثي مرتب عشوائي من الأرقام.</li>
		</ul>
			
		<p>
		هناك أشياء أخرى يمكن استخدام متجه ثلاثي الأبعاد لتمثيلها ، مثل
		متجهات الزخم وما إلى ذلك ، ومع ذلك فإن هذه هي الاستخدامات الأكثر شيوعًا في
		three.js.
		</p>
			
		<p>
		التكرار عبر مثيل [name] سوف ينتج عنه مكوناته `(x, y, z)`
		بالترتيب المقابل.
		</p>
			
		<h2>مثال للكود</h2>
		<code>
		const a = new THREE.Vector3( 0, 1, 0 );

		//no arguments; will be initialised to (0, 0, 0)
		const b = new THREE.Vector3( );

		const d = a.distanceTo( b );
		</code>

		<h2>المنشئ (Constructor)</h2>

		<h3>[name]( [param:Float x], [param:Float y], [param:Float z] )</h3>
		<p>
		[page:Float x] - قيمة x لهذا الفيكتور. القيمة الافتراضية هي `0`. <br />
		[page:Float y] - قيمة y لهذا الفيكتور. القيمة الافتراضية هي `0`. <br />
		[page:Float z] - قيمة z لهذا الفيكتور. القيمة الافتراضية هي `0`. <br /><br />
		
		ينشئ [name] جديد.
		</p>
		
		<h2>الخصائص (Properties)</h2>
		
		<h3>[property:Boolean isVector3]</h3>
		<p>علامة للتحقق مما إذا كان الكائن المعطى من نوع [name] أم لا.</p>
		
		<h3>[property:Float x]</h3>
		
		<h3>[property:Float y]</h3>
		
		<h3>[property:Float z]</h3>
		
		<h2>الوظائف (Methods)</h2>
		
		<h3>[method:this add]( [param:Vector3 v] )</h3>
		<p>يضيف [page:Vector3 v] إلى هذا الفيكتور.</p>
		
		<h3>[method:this addScalar]( [param:Float s] )</h3>
		<p>
		يضيف قيمة العدد s إلى قيم [page:.x x]، [page:.y y] و [page:.z z] لهذا الفيكتور.
		</p>
		
		<h3>[method:this addScaledVector]( [param:Vector3 v], [param:Float s] )</h3>
		<p>
		يضيف الضرب المتعدد لـ [page:Vector3 v] و [page:Float s] إلى هذا الفيكتور.
		</p>
		
		<h3>[method:this addVectors]( [param:Vector3 a], [param:Vector3 b] )</h3>
		<p>يعيد هذا الفيكتور إلى [page:Vector3 a] + [page:Vector3 b].</p>
		
		<h3>
		[method:this applyAxisAngle]( [param:Vector3 axis], [param:Float angle] )
		</h3>
		<p>
		[page:Vector3 axis] - محور [page:Vector3] موحّد.<br />
		[page:Float angle] - زاوية بالراديان.<br /><br />
		
		يطبق تحويلًا يُحدد بواسطة محور وزاوية على هذا الفيكتور.
		</p>
		
		<h3>[method:this applyEuler]( [param:Euler euler] )</h3>
		<p>
		يطبق تحويل أويلر على هذا الفيكتور من خلال تحويل الكائن [page:Euler]
		إلى [page:Quaternion] وتطبيقه.
		</p>
		
		<h3>[method:this applyMatrix3]( [param:Matrix3 m] )</h3>
		<p>يضرب هذا الفيكتور بواسطة [page:Matrix3 m].</p>
		
		<h3>[method:this applyMatrix4]( [param:Matrix4 m] )</h3>
		<p>
		يضرب هذا الفيكتور (مع وجود 1 ضمن الأبعاد الرابعة) بـ m، ويقسمه على
		التوازن.
		</p>
		
		<h3>[method:this applyNormalMatrix]( [param:Matrix3 m] )</h3>
		<p>
		يضرب هذا الفيكتور بواسطة مصفوفة القوامة العادية [page:Matrix3 m] ويقوم
		بتطبيع النتيجة.
		</p>
		
		<h3>[method:this applyQuaternion]( [param:Quaternion quaternion] )</h3>
		<p>يطبق تحويل [page:Quaternion] على هذا الفيكتور.</p>
		
		<h3>[method:Float angleTo]( [param:Vector3 v] )</h3>
		<p>
		يعيد الزاوية بين هذا الفيكتور وفيكتور [page:Vector3 v] بالراديان.
		</p>
		
		<h3>[method:this ceil]()</h3>
		<p>
		يقوم بتقريب مكونات [page:.x x]، [page:.y y] و [page:.z z] لهذا الفيكتور إلى
		أقرب قيمة صحيحة.
		</p>
		
		<h3>[method:this clamp]( [param:Vector3 min], [param:Vector3 max] )</h3>
		<p>
		[page:Vector3 min] - القيم [page:.x x]، [page:.y y] و [page:.z z] الدنيا.<br />
		[page:Vector3 max] - القيم [page:.x x]، [page:.y y] و [page:.z z] العليا في النطاق المطلوب.<br /><br />
		
		إذا كانت قيم x أو y أو z لهذا الفيكتور أكبر من قيم x أو y أو z العليا للفيكتور، يتم استبدالها بالقيم المقابلة. <br /><br />
		إذا كانت قيم x أو y أو z لهذا الفيكتور أقل من قيم x أو y أو z الدنيا للفيكتور، يتم استبدالها بالقيم المقابلة.
		</p>
		

		<h3>[method:this clampLength]( [param:Float min], [param:Float max] )</h3>
		<p>
		[page:Float min] - القيمة الدنيا التي ستتم تقييدها للطول <br />
		[page:Float max] - القيمة العليا التي ستتم تقييدها للطول<br /><br />
		
		إذا كان طول هذا الفيكتور أكبر من القيمة العليا، سيتم تصغير الفيكتور بحيث يصبح طوله هو القيمة العليا. <br /><br />
		إذا كان طول هذا الفيكتور أقل من القيمة الدنيا، سيتم تكبير الفيكتور بحيث يصبح طوله هو القيمة الدنيا.
		</p>
		
		<h3>[method:this clampScalar]( [param:Float min], [param:Float max] )</h3>
		<p>
		[page:Float min] - القيمة الدنيا التي ستتم تقييدها للمكونات
		<br />
		[page:Float max] - القيمة العليا التي ستتم تقييدها للمكونات<br /><br />
		
		إذا كانت قيم x أو y أو z لهذا الفيكتور أكبر من القيمة العليا، سيتم استبدالها بالقيمة العليا. <br /><br />
		إذا كانت قيم x أو y أو z لهذا الفيكتور أقل من القيمة الدنيا، سيتم استبدالها بالقيمة الدنيا.
		</p>
		
		<h3>[method:Vector3 clone]()</h3>
		<p>
		يعيد فيكتور3 جديدًا بنفس القيم x، y، و z كهذا الفيكتور.
		</p>
		
		<h3>[method:this copy]( [param:Vector3 v] )</h3>
		<p>
		ينسخ قيم خصائص x، y، و z لفيكتور3 الممرر إلى هذا الفيكتور.
		</p>
		
		<h3>[method:this cross]( [param:Vector3 v] )</h3>
		<p>
		يضبط هذا الفيكتور إلى ناتج الضرب النقطي بينه وبين Vector3 v.
		</p>
		
		<h3>[method:this crossVectors]( [param:Vector3 a], [param:Vector3 b] )</h3>
		<p>
		يضبط هذا الفيكتور إلى ناتج الضرب النقطي بين Vector3 a و Vector3 b.
		</p>
		
		<h3>[method:Float distanceTo]( [param:Vector3 v] )</h3>
		<p>يحسب المسافة من هذا الفيكتور إلى Vector3 v.</p>

		<h3>[method:Float manhattanDistanceTo]( [param:Vector3 v] )</h3>
		<p>
		يحسب [link:https://en.wikipedia.org/wiki/Taxicab_geometry Manhattan distance] 
		من هذا المتجه إلى [page:Vector3 v].
		</p>
	 
		<h3>[method:Float distanceToSquared]( [param:Vector3 v] )</h3>
		<p>
		يحسب المسافة المربعة من هذا المتجه إلى [page:Vector3 v]. إذا كنت
		تقارن المسافة مع مسافة أخرى، يجب عليك مقارنة
		المسافة المربعة بدلاً من ذلك كما هو أكثر كفاءة قليلاً في
		الحساب.
		</p>
	 
		<h3>[method:this divide]( [param:Vector3 v] )</h3>
		<p>يقسم هذا المتجه بواسطة [page:Vector3 v].</p>
	 
		<h3>[method:this divideScalar]( [param:Float s] )</h3>
		<p>يقسم هذا المتجه بواسطة العدد الفردي [page:Float s].</p>
	 
		<h3>[method:Float dot]( [param:Vector3 v] )</h3>
		<p>
		حساب [link:https://en.wikipedia.org/wiki/Dot_product dot product]
		لهذا المتجه و[page:Vector3 v].
		</p>
	 
		<h3>[method:Boolean equals]( [param:Vector3 v] )</h3>
		<p>
		يعود `true` إذا كانت مكونات هذا المتجه و[page:Vector3 v] هي
		صارمة متساوية؛ `false` في حالات أخرى.
		</p>
	 
		<h3>[method:this floor]()</h3>
		<p>
		يتم تقريب مكونات هذا المتجه إلى أسفل إلى أقرب قيمة صحيحة
		قيمة.
		</p>
	 
		<h3>
		[method:this fromArray]( [param:Array array], [param:Integer offset] )
		</h3>
		<p>
		[page:Array array] - المصفوفة المصدر.<br />
		[page:Integer offset] - ( اختياري) الإزاحة في المصفوفة. الافتراضي هو
		0.<br /><br />
	 
		يضع قيمة هذا المتجه [page:.x x] لتكون `array[ offset + 0 ]`، قيمة [page:.y y]
		لتكون `array[ offset + 1 ]` وقيمة [page:.z z] لتكون `array[ offset + 2 ]`.
		</p>
	 
		<h3>
		[method:this fromBufferAttribute]( [param:BufferAttribute attribute], [param:Integer index] )
		</h3>
		<p>
		[page:BufferAttribute attribute] - السمة المصدر.<br />
		[page:Integer index] - الفهرس في السمة.<br /><br />
		 
		يضع قيم هذا المتجه [page:.x x]، [page:.y y] و [page:.z z] من
		ال[page:BufferAttribute attribute].
		</p>
		 
		<h3>[method:Float getComponent]( [param:Integer index] )</h3>
		<p>
		[page:Integer index] - 0، 1 أو 2.<br /><br />
		 
		إذا كان الفهرس يساوي 0 يعيد قيمة [page:.x x]. <br />
		إذا كان الفهرس يساوي 1 يعيد قيمة [page:.y y]. <br />
		إذا كان الفهرس يساوي 2 يعيد قيمة [page:.z z].
		</p>
		 
		<h3>[method:Float length]()</h3>
		<p>
		يحسب [link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي]
		(طول الخط المستقيم) من (0، 0، 0) إلى (x، y، z).
		</p>
		 
		<h3>[method:Float manhattanLength]()</h3>
		<p>
		يحسب طول مانهاتن
		لهذا المتجه.
		</p>
		 
		<h3>[method:Float lengthSq]()</h3>
		<p>
		يحسب مربع
		[link:https://en.wikipedia.org/wiki/Euclidean_distance الطول الإقليدي]
		(طول الخط المستقيم) من (0، 0، 0) إلى (x، y، z). إذا كنت تقارن
		أطوال المتجهات، يجب عليك مقارنة طول المربع بدلاً من ذلك كما
		أنه أكثر كفاءة قليلاً في الحساب.
		</p>
		 
		<h3>[method:this lerp]( [param:Vector3 v], [param:Float alpha] )</h3>
		<p>
		[page:Vector3 v] - [page:Vector3] للتداخل نحوه.<br />
		[page:Float alpha] - عامل التداخل، عادة في المغلق
		الفاصل `[0, 1]`.<br /><br />
		 
		تداخل خطي بين هذا المتجه و[page:Vector3 v]، حيث alpha
		هو نسبة المسافة على طول الخط - alpha = 0 سيكون هذا المتجه،
		وalpha = 1 ستكون [page:Vector3 v].
		</p>

		<h3>
		[method:this lerpVectors]( [param:Vector3 v1], [param:Vector3 v2], [param:Float alpha] )
		</h3>
		<p>
		[page:Vector3 v1] - البداية [page:Vector3].<br />
		[page:Vector3 v2] - [page:Vector3] للتداخل نحوه.<br />
		[page:Float alpha] - عامل التداخل، عادة في الفاصل المغلق
		`[0، 1]`.<br /><br />
		 
		يضع هذا المتجه ليكون المتجه المتداخل خطيًا بين
		[page:Vector3 v1] و [page:Vector3 v2] حيث يكون ألفا هو النسبة
		المئوية للمسافة على طول الخط الذي يربط المتجهين - سيكون ألفا = 0
		[page:Vector3 v1]، وسيكون ألفا = 1 [page:Vector3 v2].
		</p>
		 
		<h3>[method:this max]( [param:Vector3 v] )</h3>
		<p>
		إذا كانت قيمة x أو y أو z لهذا المتجه أقل من قيمة x أو y أو z
		لـ [page:Vector3 v]، استبدل تلك القيمة بالقيمة القصوى المقابلة.
		</p>
		 
		<h3>[method:this min]( [param:Vector3 v] )</h3>
		<p>
		إذا كانت قيمة x أو y أو z لهذا المتجه أكبر من قيمة x أو y
		أو z لـ [page:Vector3 v]، استبدل تلك القيمة بالقيمة الدنيا المقابلة.
		</p>
		 
		<h3>[method:this multiply]( [param:Vector3 v] )</h3>
		<p>يضرب هذا المتجه بـ [page:Vector3 v].</p>
		 
		<h3>[method:this multiplyScalar]( [param:Float s] )</h3>
		<p>يضرب هذا المتجه بالعدد القائم [page:Float s].</p>
		 
		<h3>
		[method:this multiplyVectors]( [param:Vector3 a], [param:Vector3 b] )
		</h3>
		<p>
		يضع هذا المتجه يساوي [page:Vector3 a] * [page:Vector3 b]،
		مكونًا حكيمًا.
		</p>
		 
		<h3>[method:this negate]()</h3>
		<p>يعكس هذا المتجه - أي يضع x = -x، y = -y و z = -z.</p>
		 
		<h3>[method:this normalize]()</h3>
		<p>
		تحويل هذا المتجه إلى متجه وحدة 
		- أي يضعه يساوي متجه بنفس الاتجاه
		كهذا واحد، ولكن طول الصفحة 1.
		</p>

		<h3>[method:this project]( [param:Camera camera] )</h3>
		<p>
		[page:Camera camera] — الكاميرا المستخدمة في الإسقاط.<br /><br />
	 
		يسقط هذا المتجه من مساحة العالم إلى مساحة جهاز الكاميرا المعيارية
		(NDC).
		</p>
	 
		<h3>[method:this projectOnPlane]( [param:Vector3 planeNormal] )</h3>
		<p>
		[page:Vector3 planeNormal] - متجه يمثل عادي الطائرة.<br /><br />
	 
		[link:https://en.wikipedia.org/wiki/Vector_projection يسقط] هذا
		المتجه على طائرة عن طريق طرح هذا المتجه المسقط على عادي الطائرة من هذا
		المتجه.
		</p>
	 
		<h3>[method:this projectOnVector]( [param:Vector3 v] )</h3>
		<p>
		[link:https://en.wikipedia.org/wiki/Vector_projection يسقط] هذا
		المتجه على [page:Vector3 v].
		</p>
	 
		<h3>[method:this reflect]( [param:Vector3 normal] )</h3>
		<p>
		[page:Vector3 normal] - العادي إلى طائرة الانعكاس<br /><br />
	 
		يعكس هذا المتجه قبالة طائرة متعامدة على [page:Vector3 normal].
		يفترض أن يكون العادي لديه طول وحدة.
		</p>
	 
		<h3>[method:this round]()</h3>
		<p>
		تتم جولة مكونات هذا المتجه إلى أقرب قيمة صحيحة.
		</p>
	 
		<h3>[method:this roundToZero]()</h3>
		<p>
		تتم جولة مكونات هذا المتجه نحو الصفر (لأعلى إذا كان سالبًا،
		لأسفل إذا كان إيجابيًا) إلى قيمة صحيحة.
		</p>
	 
		<h3>
		[method:this set]( [param:Float x], [param:Float y], [param:Float z] )
		</h3>
		<p>
		يضبط مكونات [page:.x x]، [page:.y y] و [page:.z z] من هذا
		المتجه.
		</p>
	 
		<h3>
		[method:this setComponent]( [param:Integer index], [param:Float value] )
		</h3>
		<p>
		[page:Integer index] - 0، 1 أو 2.<br />
		[page:Float value] - [page:Float]<br /><br />
			
		إذا كان index يساوي 0 يضبط [page:.x x] على [page:Float value].<br />
		إذا كان index يساوي 1 يضبط [page:.y y] على [page:Float value].<br />
		إذا كان index يساوي 2 يضبط [page:.z z] على [page:Float value]
		</p>
			
		<h3>[method:this setFromColor]( [param:Color color] )</h3>
		<p>
		يضبط مكونات [page:.x x] و [page:.y y] و [page:.z z] لهذا المتجه من مكونات r و g و b لـ[page:Color color] المحدد.
		</p>
			
		<h3>[method:this setFromCylindrical]( [param:Cylindrical c] )</h3>
		<p>
		يضبط هذا المتجه من الإحداثيات الأسطوانية [page:Cylindrical c].
		</p>
			
		<h3>
		[method:this setFromCylindricalCoords]( [param:Float radius], [param:Float theta], [param:Float y] )
		</h3>
		<p>
		يضبط هذا المتجه من الإحداثيات الأسطوانية [page:Cylindrical radius]، و[page:Cylindrical theta] و[page:Cylindrical y].
		</p>
			
		<h3>[method:this setFromEuler]( [param:Euler euler] )</h3>
		<p>
		يضبط مكونات [page:.x x] و[page:.y y] و[page:.z z] لهذا المتجه من مكونات x و y و z لـ[page:Euler Euler Angle] المحدد.
		</p>
			
		<h3>
		[method:this setFromMatrixColumn]( [param:Matrix4 matrix], [param:Integer index] )
		</h3>
		<p>
		يضبط مكونات [page:.x x] و[page:.y y] و[page:.z z] لهذا المتجه من العمود [page:Integer index] من [page:Matrix4 matrix].
		</p>
			
		<h3>
		[method:this setFromMatrix3Column]( [param:Matrix3 matrix], [param:Integer index] )
		</h3>
		<p>
		يضبط مكونات [page:.x x] و [page:.y y] و [page:.z z] لهذا المتجه من العمود [page:Integer index] من [page:Matrix3 matrix].
		</p>
			
		<h3>[method:this setFromMatrixPosition]( [param:Matrix4 m] )</h3>
		<p>
		يضبط هذا المتجه على عناصر الموضع لـ [link:https://en.wikipedia.org/wiki/Transformation_matrix مصفوفة التحويل] [page:Matrix4 m].
		</p>
			
		<h3>[method:this setFromMatrixScale]( [param:Matrix4 m] )</h3>
		<p>
		يضبط هذا المتجه على عناصر الحجم لـ [link:https://en.wikipedia.org/wiki/Transformation_matrix مصفوفة التحويل] [page:Matrix4 m].
		</p>
			
		<h3>[method:this setFromSpherical]( [param:Spherical s] )</h3>
		<p>يضبط هذا المتجه من الإحداثيات الكروية [page:Spherical s].</p>
			
		<h3>
		[method:this setFromSphericalCoords]( [param:Float radius], [param:Float phi], [param:Float theta] )
		</h3>
		<p>
		يضبط هذا المتجه من الإحداثيات الكروية [page:Spherical radius]، و[page:Spherical phi] و[page:Spherical theta].
		</p>
			
		<h3>[method:this setLength]( [param:Float l] )</h3>
		<p>
		يضبط هذا المتجه على متجه بنفس اتجاه هذا، ولكن بـ [page:.length length] يساوي [page:Float l].
		</p>
			
		<h3>[method:this setScalar]( [param:Float scalar] )</h3>
		<p>
		يضبط قيمة كل من [page:.x x] و[page:.y y] و[page:.z z] لهذا المتجه على قيمة مساوية لـ[page:Float scalar].
		</p>
			
		<h3>[method:this setX]( [param:Float x] )</h3>
		<p>يستبدل قيمة [page:.x x] لهذا المتجه بـ[page:Float x].</p>
			
		<h3>[method:this setY]( [param:Float y] )</h3>
		<p>يستبدل قيمة [page:.y y] لهذا المتجه بـ[page:Float y].</p>
			
		<h3>[method:this setZ]( [param:Float z] )</h3>
		<p>يستبدل قيمة [page:.z z] لهذا المتجه بـ[page:Float z].</p>
			
		<h3>[method:this sub]( [param:Vector3 v] )</h3>
		<p>يطرح [page:Vector3 v] من هذا المتجه.</p>

		<h3>[method:this subScalar]( [param:Float s] )</h3>
		<p>
		يطرح [page:Float s] من مكونات [page:.x x] و [page:.y y] و [page:.z z] لهذا المتجه.
		</p>
		
		<h3>[method:this subVectors]( [param:Vector3 a], [param:Vector3 b] )</h3>
		<p>يضبط هذا المتجه على [page:Vector3 a] - [page:Vector3 b].</p>
		
		<h3>
		[method:Array toArray]( [param:Array array], [param:Integer offset] )
		</h3>
		<p>
		[page:Array array] - (اختياري) مصفوفة لتخزين هذا المتجه فيها. إذا لم يتم توفير هذا، سيتم إنشاء مصفوفة جديدة.<br />
		[page:Integer offset] - (اختياري) إزاحة اختيارية في المصفوفة.<br /><br />
		
		يرجع مصفوفة [x، y، z]، أو ينسخ x و y و z في المصفوفة المعطاة من نوع [page:Array array].
		</p>
		
		<h3>[method:this transformDirection]( [param:Matrix4 m] )</h3>
		<p>
		يحول اتجاه هذا المتجه بمصفوفة (المجموعة العلوية اليسرى 3 × 3 من [page:Matrix4 m]) ثم يقوم بـ [page:.normalize تطبيع] النتيجة.
		</p>
		
		<h3>[method:this unproject]( [param:Camera camera] )</h3>
		<p>
		[page:Camera camera] — الكاميرا المستخدمة في الإسقاط.<br /><br />
		
		يُسقِط هذا المتجه من مساحة الجهاز المعيارية للكاميرا (NDC) إلى مساحة العالم.
		</p>
		
		<h3>[method:this random]()</h3>
		<p>
		يضبط كل مكون من مكونات هذا المتجه على قيمة شبه عشوائية بين 0 و 1، باستثناء 1.
		</p>
		
		<h3>[method:this randomDirection]()</h3>
		<p>يضبط هذا المتجه على نقطة عشوائية موحدة على كرة وحدة.</p>
		
		<h2>المصدر (Source)</h2>

		<p>
			[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
		</p>
	</body>
</html>
